USE chilis
GO

CREATE PROC UPDATE_PLAN_AUDITOR
@PLAN CHAR(6),
@EMP CHAR(8),
@LIDER BIT,
@ACC BIT
AS
	IF ( @ACC = 1 )
		BEGIN
			IF EXISTS ( SELECT * FROM TB_PLAN_AUDITOR WHERE IDEMPLEADO = @EMP AND IDPLAN_AUDITORIA = @PLAN )
				UPDATE TB_PLAN_AUDITOR SET LIDER = @LIDER, FECHA = GETDATE()
				WHERE IDEMPLEADO = @EMP AND IDPLAN_AUDITORIA = @PLAN
			ELSE
				INSERT INTO TB_PLAN_AUDITOR VALUES (@PLAN, @EMP, @LIDER, GETDATE())
		END
	ELSE
		DELETE FROM TB_PLAN_AUDITOR WHERE IDEMPLEADO = @EMP AND IDPLAN_AUDITORIA = @PLAN	
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROC LISTAR_CHECKLIST_PROC
@PROCEDIMIENTO VARCHAR(100)
AS
EXEC('
SELECT CP.IDPROCEDIMIENTO, VALOR_ESPERADO, P.NOMBRE, C.IDCHECKLIST, C.DESCRIPCION 
FROM TB_PROCEDIMIENTO_CHECKLIST CP
INNER JOIN TB_PROCEDIMIENTO P ON (P.IDPROCEDIMIENTO = CP.IDPROCEDIMIENTO)
INNER JOIN TB_CHECKLIST C ON (C.IDCHECKLIST = CP.IDCHECKLIST)
WHERE CP.IDPROCEDIMIENTO IN (' + @PROCEDIMIENTO + ')' )
GO

/*
EXEC LISTAR_CHECKLIST_PROC "'PR00000001', 'PR00000002'"
GO
*/

CREATE PROC UPDATE_PLAN_AUDITORIA
@PLAN CHAR(6),
@VERSION INT,
@FECHA SMALLDATETIME,
@ALCANCE VARCHAR(150),
@OBJETIVO VARCHAR(150),
@CODIGO_PROCESO CHAR(5)
AS	
		UPDATE TB_PLAN_AUDITORIA SET VERSION = @VERSION, FECHA = @FECHA, ALCANCE= @ALCANCE, OBJETIVO = @OBJETIVO,
		IDPROCESO = @CODIGO_PROCESO
		WHERE IDPLAN_AUDITORIA = @PLAN
GO

CREATE PROC UPDATE_DETALLE_PLAN_AUDITORIA
@CODIGO_PROC CHAR(10),
@CODIGO_CHECK CHAR(10),
@CODIGO_PLAN CHAR(6),
@ACC BIT
AS
	IF ( @ACC = 1 )
		BEGIN
			--IF NOT EXISTS(SELECT * FROM DETALLE_PLAN_AUDITORIA WHERE CODIGO_PROC = @CODIGO_PROC AND CODIGO_CHECK = @CODIGO_CHECK AND CODIGO_PLAN = @CODIGO_PLAN)
				INSERT INTO TB_DETALLE_PLAN_AUDITORIA(IDPROCEDIMIENTO, IDCHECKLIST, IDPLAN_AUDITORIA, VALOR_MEDIDO, FECHA_AUDITORIA) 
				VALUES (@CODIGO_PROC, @CODIGO_CHECK, @CODIGO_PLAN, 0, GETDATE())
		END
	ELSE
		DELETE FROM TB_DETALLE_PLAN_AUDITORIA 
		WHERE IDPROCEDIMIENTO = @CODIGO_PROC AND IDCHECKLIST = @CODIGO_CHECK AND IDPLAN_AUDITORIA = @CODIGO_PLAN
GO

CREATE PROC UPDATE_PLAN_PROCESO_AREA
@CODIGO_PROCESO CHAR(5), 
@CODIGO_AREA CHAR(4),
@CODIGO_PLAN CHAR(6),
@ACC BIT
AS
	IF ( @ACC = 1 )
		BEGIN
			INSERT INTO TB_PLAN_AREA VALUES (@CODIGO_PROCESO, @CODIGO_AREA, @CODIGO_PLAN)
		END
	ELSE
		DELETE FROM TB_PLAN_AREA 
		WHERE IDPROCESO = @CODIGO_PROCESO AND IDAREA = @CODIGO_AREA AND IDPLAN_AUDITORIA = @CODIGO_PLAN
GO

CREATE PROC GENERAR_PLAN_AUDITORIA
@CODIGO_PROCESO CHAR(5),
@CODIGO_PLAN CHAR(6)
AS
	DECLARE @PLAN CHAR(6)
	IF ( RTRIM(@CODIGO_PLAN) = '' )
		BEGIN
			SET @PLAN = (SELECT 'PL' + RIGHT('0000' + LTRIM(RIGHT(ISNULL(MAX(IDPLAN_AUDITORIA),'PL0000'), 4) + 1), 4) FROM TB_PLAN_AUDITORIA)
			INSERT INTO TB_PLAN_AUDITORIA VALUES(@PLAN, '1.0', GETDATE(), '', '', 0, @CODIGO_PROCESO)
		END
	ELSE
		BEGIN
			DELETE FROM TB_PLAN_AUDITORIA WHERE IDPLAN_AUDITORIA = @CODIGO_PLAN
			SET @PLAN = ''
		END
	SELECT @PLAN
GO

CREATE PROC UPDATE_AUDITOR_LIDER
@PLAN CHAR(6),
@EMP CHAR(8)
AS
	UPDATE TB_PLAN_AUDITOR SET LIDER = 0 WHERE IDPLAN_AUDITORIA = @PLAN
	UPDATE TB_PLAN_AUDITOR SET LIDER = 1 WHERE IDPLAN_AUDITORIA = @PLAN AND IDEMPLEADO = @EMP
GO

--EXEC GENERAR_PLAN_AUDITORIA
--GO

CREATE PROC BUSCAR_CHECKLIST
@CADENA VARCHAR(100)
AS
	SELECT * FROM TB_CHECKLIST WHERE DESCRIPCION LIKE '%' + @CADENA + '%'
GO

EXEC BUSCAR_CHECKLIST '1'
GO

CREATE PROC UPDATE_CHECKLISTPROCEDIMIENTO
@CHECK CHAR(10),
@PROCEDIMIENTO CHAR(10),
@VALOR CHAR(30),
@ACC BIT
AS
	IF ( @ACC = 1 )
		BEGIN
			IF EXISTS ( SELECT * FROM TB_PROCEDIMIENTO_CHECKLIST WHERE IDCHECKLIST = @CHECK AND IDPROCEDIMIENTO = @PROCEDIMIENTO )
				UPDATE TB_PROCEDIMIENTO_CHECKLIST  SET VALOR_ESPERADO = @VALOR
				WHERE IDCHECKLIST = @CHECK AND IDPROCEDIMIENTO = @PROCEDIMIENTO 
			ELSE
				INSERT INTO TB_PROCEDIMIENTO_CHECKLIST VALUES (@PROCEDIMIENTO, @CHECK, @VALOR)
		END
	ELSE
		DELETE FROM TB_PROCEDIMIENTO_CHECKLIST WHERE IDCHECKLIST = @CHECK AND IDPROCEDIMIENTO = @PROCEDIMIENTO 
GO


/*
-----------------------------------------------------------------------------------------------
-- CARLOS
-----------------------------------------------------------------------------------------------
CREATE PROC REGISTRAR_INFORME_ADITORIA
(
	@CODIGO_PLAN CHAR(6)
	, @OBJETIVO VARCHAR(400)
	, @FECHA_INFORME DATE
	, @OBSERVACION VARCHAR(400)
	, @RECOMENDACION VARCHAR(400)
	, @SITUACION_INFORME CHAR(2)
)
AS
BEGIN	
	DECLARE @CODIGO_INFORME VARCHAR(6)	
	SET @CODIGO_INFORME = (SELECT 'IF' + RIGHT('000000' + CONVERT(VARCHAR(6),ISNULL(CONVERT(INT,MAX(RIGHT(CODIGO_INFORME,4))),0)+ 1),4)
							FROM INFORME_AUDITORIA)
		
	INSERT INTO INFORME_AUDITORIA
	(
		CODIGO_INFORME
		, CODIGO_PLAN
		, OBJETIVO
		, FECHA_INFORME
		, OBSERVACION
		, RECOMENDACION
		, SITUACION_INFORME
	)
	VALUES
	(
		@CODIGO_INFORME
		, @CODIGO_PLAN
		, @OBJETIVO
		, @FECHA_INFORME
		, @OBSERVACION
		, @RECOMENDACION
		, @SITUACION_INFORME
	)
	
END
GO

--DROP PROC LISTAR_INFORME_AUDITORIA
CREATE PROC LISTAR_INFORME_AUDITORIA
	@FECHA DATE = NULL
AS
BEGIN 
	SELECT 
			IA.CODIGO_INFORME
			, PA.CODIGO_PLAN
			, CONVERT(DATE,PA.FECHA) AS FECHA
	FROM INFORME_AUDITORIA IA INNER JOIN
			PLAN_AUDITORIA PA ON IA.CODIGO_PLAN = PA.CODIGO_PLAN
	WHERE (@FECHA IS NULL OR CONVERT(DATE,PA.FECHA) = @FECHA)
END;
GO
--
CREATE PROC OBTENER_INFORME_AUDITORIA
	@CODIGO_INFORME CHAR(6)
	, @CODIGO_PLAN CHAR(6)	
AS
BEGIN
	SELECT
			IA.CODIGO_INFORME
			, IA.CODIGO_PLAN
			, IA.OBJETIVO
			, IA.FECHA_INFORME
			, IA.OBSERVACION
			, IA.RECOMENDACION
			, IA.SITUACION_INFORME
			, PA.ALCANCE
			, CONVERT(DATE,PA.FECHA) AS FECHA
	FROM INFORME_AUDITORIA IA INNER JOIN
			PLAN_AUDITORIA PA ON IA.CODIGO_PLAN = PA.CODIGO_PLAN
	WHERE	IA.CODIGO_INFORME = @CODIGO_INFORME
			AND PA.CODIGO_PLAN =  @CODIGO_PLAN
END;
GO
--EXEC OBTENER_INFORME_AUDITORIA 'IF0001', 'PL0001'
CREATE PROC ELIMINAR_INFORME_AUDITORIA
	@CODIGO_INFORME CHAR(6)
AS
BEGIN
	DELETE FROM INFORME_AUDITORIA
	WHERE CODIGO_INFORME = @CODIGO_INFORME
END;
--EXEC ELIMINAR_INFORME_AUDITORIA 'IF0001'
GO
CREATE PROC ACTUALIZAR_INFORME_AUDITORIA
	@CODIGO_INFORME CHAR(6)
	, @CODIGO_PLAN CHAR(6)
	, @OBJETIVO VARCHAR(400)
	, @FECHA_INFORME DATE
	, @OBSERVACION VARCHAR(400)
	, @RECOMENDACION VARCHAR(400)
	, @SITUACION_INFORME CHAR(2)
AS
BEGIN
	UPDATE INFORME_AUDITORIA
		SET 
			CODIGO_PLAN = @CODIGO_PLAN
			, OBJETIVO = @OBJETIVO
			, FECHA_INFORME = @FECHA_INFORME
			, OBSERVACION = @OBSERVACION
			, RECOMENDACION = @RECOMENDACION
			, SITUACION_INFORME = @SITUACION_INFORME
	WHERE CODIGO_INFORME = @CODIGO_INFORME
END;
GO
--ACTUALIZAR_INFORME_AUDITORIA 'IF0002', 'PL0001', 'AAA', '2013-02-02', 'AAA', 'AAA', '01'
*/







